#ifndef ASM_PGTABLE_TYPES_H
#define ASM_PGTABLE_TYPES_H

#ifndef __ASSEMBLY__
#include <base/types.h>

typedef NX_U64 PTE_Value;
typedef NX_U64 PME_Value;
typedef NX_U64 PUD_Value;
typedef NX_U64 PGD_Value;

typedef struct {
	PTE_Value pte;
} PTE_Type;
#define GetPTE(x) ((x).pte)
#define MakePTE(x) ((PTE_Type) { (x) })

typedef struct {
	PME_Value pmd;
} PMD_Type;
#define GetPMD(x) ((x).pmd)
#define MakePMD(x) ((PMD_Type) { (x) })

typedef struct {
	PUD_Value pud;
} PUD_Type;
#define GetPUD(x) ((x).pud)
#define MakePUD(x) ((PUD_Type) { (x) })

typedef struct {
	PGD_Value pgd;
} PGD_Type;
#define GetPGD(x) ((x).pgd)
#define MakePGD(x) ((PGD_Type) { (x) })

#endif
#endif /*ASM_PGTABLE_TYPES_H*/
